/**
 */
package fUML.Semantics.Activities.ExtraStructuredActivities;

import fUML.Semantics.Actions.BasicActions.OutputPinActivation;

import fUML.Semantics.Activities.IntermediateActivities.ActivityNodeActivationGroup;

import org.eclipse.emf.common.util.EList;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Expansion Activation Group</b></em>'.
 * <!-- end-user-doc -->
 *
 * <!-- begin-model-doc -->
 * An expansion activation group is an activity node activation group used for
 *                 activating nodes inside an expansion region.
 *  It functions just like a
 *                 normal activation group, except it has output pin activations corresponding to the
 *                 input pins and the expansion nodes of the expansion region.
 *  Instances of
 *                 edges from nodes inside the expansion region that connect to region input pins,
 *                 input expansion nodes or output expansion nodes are redirected to connect to the
 *                 corresponding "region input", "group input" or "group output" pin,
 *                 respectively.
 *  
 * <!-- end-model-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getRegionInputs <em>Region Inputs</em>}</li>
 *   <li>{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getGroupInputs <em>Group Inputs</em>}</li>
 *   <li>{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getRegionActivation <em>Region Activation</em>}</li>
 *   <li>{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getGroupOutputs <em>Group Outputs</em>}</li>
 *   <li>{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getIndex <em>Index</em>}</li>
 * </ul>
 * </p>
 *
 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup()
 * @model
 * @generated
 */
public interface ExpansionActivationGroup extends ActivityNodeActivationGroup {
	/**
	 * Returns the value of the '<em><b>Region Inputs</b></em>' reference list.
	 * The list contents are of type {@link fUML.Semantics.Actions.BasicActions.OutputPinActivation}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * Output pin activations corresponding, in order, to the input pins of the
	 *                   expansion region of this activation group.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Region Inputs</em>' reference list.
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup_RegionInputs()
	 * @model ordered="false"
	 * @generated
	 */
	EList<OutputPinActivation> getRegionInputs();

	/**
	 * Returns the value of the '<em><b>Group Inputs</b></em>' reference list.
	 * The list contents are of type {@link fUML.Semantics.Actions.BasicActions.OutputPinActivation}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * Output pin activations corresponding, in order, to the input expansion nodes
	 *                   of the expansion region of this activation group.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Group Inputs</em>' reference list.
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup_GroupInputs()
	 * @model ordered="false"
	 * @generated
	 */
	EList<OutputPinActivation> getGroupInputs();

	/**
	 * Returns the value of the '<em><b>Region Activation</b></em>' container reference.
	 * It is bidirectional and its opposite is '{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionRegionActivation#getActivationGroups <em>Activation Groups</em>}'.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * The expansion region activation this activation group is for.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Region Activation</em>' container reference.
	 * @see #setRegionActivation(ExpansionRegionActivation)
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup_RegionActivation()
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionRegionActivation#getActivationGroups
	 * @model opposite="activationGroups" required="true" transient="false" ordered="false"
	 * @generated
	 */
	ExpansionRegionActivation getRegionActivation();

	/**
	 * Sets the value of the '{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getRegionActivation <em>Region Activation</em>}' container reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Region Activation</em>' container reference.
	 * @see #getRegionActivation()
	 * @generated
	 */
	void setRegionActivation(ExpansionRegionActivation value);

	/**
	 * Returns the value of the '<em><b>Group Outputs</b></em>' reference list.
	 * The list contents are of type {@link fUML.Semantics.Actions.BasicActions.OutputPinActivation}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * Output pin activations corresponding, in order, to the output expansion nodes
	 *                   of the expansion region of this activation group.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Group Outputs</em>' reference list.
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup_GroupOutputs()
	 * @model ordered="false"
	 * @generated
	 */
	EList<OutputPinActivation> getGroupOutputs();

	/**
	 * Returns the value of the '<em><b>Index</b></em>' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * <!-- begin-model-doc -->
	 * The index (starting at 1) of this activation group in the list held by the
	 *                   expansion region activation.
	 * <!-- end-model-doc -->
	 * @return the value of the '<em>Index</em>' attribute.
	 * @see #setIndex(int)
	 * @see fUML.Semantics.Activities.ExtraStructuredActivities.ExtraStructuredActivitiesPackage#getExpansionActivationGroup_Index()
	 * @model required="true" ordered="false"
	 * @generated
	 */
	int getIndex();

	/**
	 * Sets the value of the '{@link fUML.Semantics.Activities.ExtraStructuredActivities.ExpansionActivationGroup#getIndex <em>Index</em>}' attribute.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Index</em>' attribute.
	 * @see #getIndex()
	 * @generated
	 */
	void setIndex(int value);

} // ExpansionActivationGroup
